1. Technical Field
This disclosure generally relates to computer systems, and more specifically relates to monitoring virtual machine (VM) patterns as they run and dynamically adjusting the VM patterns according to one or more metrics.
2. Background Art
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments known as virtual machines. The System X computer system developed by IBM is an example of a computer system that supports logical partitioning into multiple virtual machines. If multiple virtual machines on a System X computer system are desired, partition manager code (referred to as a “hypervisor” in IBM terminology) is installed that allows defining different virtual machines on the same platform. Once the partition manager is installed, virtual machines may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the virtual machines.
Virtual machines are used extensively in computing solutions that are cloud-based. As the demands for cloud solutions increase, open source software for building clouds, such as OpenStack, have become a building block for creating a reliable and flexible cloud platform.
Deploying a computing solution to a cloud involves many considerations and decisions, such as security (public v. private cloud), price, reliability, Quality of Service, whether a single VM or multiple VMs are needed, etc. The process for finding a suitable cloud for deploying one or more VMs is currently a manual one made by a human administrator. Thus, a human administrator determines the specifications for a desired computing solution or part of a desired computing solution, and manually looks for a cloud that satisfies the specifications. When the human administrator selects a suitable cloud, the human administrator can deploy the computing solution to the selected cloud. The human administrator may then monitor performance of the computing solution, and manually make decisions regarding if and when to change configuration of the computing solution, such as moving part of the computing solution to a different cloud.